// http://www.fuzzygamedev.com/2007/05/implementando-la-clase-camara/
#include "EngineApi.h"
#include "Graphics.h"

enum eCameraType 
{ 
	ECT_GROUND, 
	ECT_AIR, 
};

class ENGINE_API Camera
{
	D3DXVECTOR3 m_position;
	
	D3DXVECTOR3 m_look;
	D3DXVECTOR3 m_up;
	D3DXVECTOR3 m_right;

	eCameraType m_cameraType;

public:
	

	Camera();
	Camera(float x, float y, float z);
	Camera(D3DXVECTOR3 position);
	//~Camera();

	//???
	void Draw(Graphics &g);

	//! Sets the camera on the given position
	void SetPosition(D3DXVECTOR3 position){ m_position = position; }
	D3DXVECTOR3 GetPosition() { return m_position; }

	//! Sets the camera
	void SetLookAtTarget(D3DXVECTOR3 target) { m_look = target; }
	void SetLookAtPosition(D3DXVECTOR3 position);

	void Pitch(float angle);
	void Yaw(float angle);
	void Roll(float angle);
	
	void Walk(float val);
	void Fly(float val);
	void Strafe(float val);
};